
  SUMMARY OF THE NEW METHOD:
      The new method, just as the AFMM, handles holes correctly, and produces ranked skeletons.
      The differences are that it correctly handles the cases the AFMM didn't
      (ligatures' angle of attack, almost parallel branches, very low pruning thresholds, up to 2 pixels).



   1. Changing the test in add_to_narrowband to use max(count) over
      alive-nbs, instead of count(active_i,active_j) corrrects the problem
      with the angle of attack of a few cases, e.g. leaf1.pgm

   2. The case, in add_to_narrowband:  (M-m<10)? average : ...
      has a positive and negative effect:
        + it smooths the evolved U signal, which is good, as it removes
          small shocks
        - it causes sometimes parallel branches when the join angle of two
          branches is very small, instead of the correctly joined branches

   3. An enhanced U-propagation seems to be the one where, for a new point
      entering the narrowband, we select the U of the _initial_ boundary
      point which is _closest_, in terms of Euclidian distance, to the
      narrowband point. See the comments below about this scheme:

      - to efficiently determine the closest initial-boundary-point to a
        given narrowband point 'n', we use an auxiliary data structure label[][].
	This a) labels the initial boundary with unique labels and b) propagates
        these labels during the FMM evolution. For every new narrowband candidate 'n',
        we have thus, for its KNOWN neighbors nb[i], the label[][] values telling where
        (on the initial boundary) nb[i] came from. The new narrowband point 'n'
        should come from the initial-boundary-point 'p' CLOSEST (in terms of Euclidian dist.)
        to it. Given the continuous FMM evolution, 'p' should be also the point at lest one of
        the nb[i] came from. So label[][] for 'p' is set to the label[][] of that nb[i] of 'p'
        which is the closest to the initial boundary.

      - the main difference w.r.t. 'old' U-propagation is that we now
        no longer propagate U from point-to-point, but rather, at every
        point where we need to estimate U, compute it using the _initial_
        boundary. This scheme avoids the undesired numerical diffusion
        inherent to the FMM we had previously. Whereas the diffusion errors in the orig. AFMM would accumulate
        during the evolution, the new scheme auto-corrects at every step, by looking at the orig. boundary.

      - in some sense, the new U-propagation resembles the exact-dilation-based
        label-propagation of [Costa], with a few important differences:
          a) our U initialization is not a labeling, but an arc-length accurate
             boundary parametrization. This should give more exact prunings
	     w.r.t. collapsed boundary length.
          b) our propagation uses the FMM, i.e. considers every object pixel
             ONCE. For that pixel, the U-candidates are a small subset, i.e.
             its already computed neighbours, for which we determine the 
             closest initial-boundary-point. So the complexity is O(N*log(avg_narrowband_length))
             for an N-pixel-obj, the same as for the AFMM. The exact dilation of [Costa]
             has a much higher complexity O(initial_narrowband_length*obj_diameter^2). Since
             avg_narrowband_length << initial_narrowband_length and obj_diameter^2 > N, we're better off.
      
      - compared to the AFMM: the new method is better, as it computes
        correct angles-of-attack in case of strong object concavities (strong shocks followed by strong dilations)
        (see ex. of leaf-tail, or jaggedrect (threshold=20), where we get
         staircased skel-branches instead of smooth ones). Sometimes, these are called ligature segments [refs].
        Intuitively, these pose problems since there's no clear DT crease to follow.
        The original AFMM did construct the ligatures, but with incorrect angles of attack.
        The new method produces the correct angles. Another similar problem
        of the original AFMM was that it constructed close parallel ligature
        branches, instead of merging them. The problem occurs when two branches merge at a very small angle.
        Due to the discretization+FMM diffusion, the merging point was missed, which created the false parallel branches.
        (show example).

      - the new method works fine for low pruning threshold values (>=2 pixels). We do get a lot of branches, but they
        are correct (see ex. leaf1.pgm e.g. at thr=3..6, orig. AFMM vs new method). The reason is that the new method computes
        U straight from the _initial_ boundary, via _exact_ Euclidian dist. evaluation, whereas the orig. AFMM used U propagation.
        In some sense, the new method strictly follows the math. def. of medialness.



        



         
      







